using StudentManagement.Application.DTOs;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace StudentManagement.Application.Services
{
    public interface IRoleService
    {
        Task<RoleDTO> GetRoleByIdAsync(int id);
        Task<RoleDTO> GetRoleByNameAsync(string name);
        Task<IEnumerable<RoleDTO>> GetAllRolesAsync();
        Task<IEnumerable<RoleDTO>> GetActiveRolesAsync();
        Task<RoleDTO> CreateRoleAsync(RoleDTO roleDTO);
        Task<RoleDTO> UpdateRoleAsync(int id, RoleDTO roleDTO);
        Task<bool> DeleteRoleAsync(int id);
        Task<IEnumerable<RoleDTO>> SearchRolesAsync(string keyword);
        Task<IEnumerable<PermissionDTO>> GetPermissionsByRoleIdAsync(int roleId);
        Task<bool> AddPermissionToRoleAsync(int roleId, int permissionId);
        Task<bool> RemovePermissionFromRoleAsync(int roleId, int permissionId);
    }
}